/**
 * @value Date | string | number
 * @format 'yyyy-MM-dd'
 * @yyyy 年
 * @MM 月 二位数 不足补零
 * @M 月
 * @dd 日 二位数 不足补零
 * @d 日
 * @HH 时 二位数 不足补零
 * @H 时
 * @mm 分 二位数 不足补零
 * @m 分
 * @ss 秒 二位数 不足补零
 * @s 秒
 */
export const formatDate = (value, format = 'yyyy-MM-dd hh:mm:ss') => {
  let newTime = value
  if (newTime.length <= 10) {
    newTime = newTime * 1000
  }
  const date = new Date(newTime)
  let str = format
  const YYYY = date.getFullYear()
  const M = date.getMonth() + 1
  const D = date.getDate()
  const H = date.getHours()
  const m = date.getMinutes()
  const s = date.getSeconds()
  str = str.replace(/(yyyy|YYYY)/, YYYY)
  str = str.replace(/MM/, M > 9 ? M : '0' + M)
  str = str.replace(/M/, M)
  str = str.replace(/(DD|dd)/, D > 9 ? D : '0' + D)
  str = str.replace(/(hh|HH)/, H > 9 ? H : '0' + H)
  str = str.replace(/(h|H)/, H)
  str = str.replace(/mm/, m > 9 ? m : '0' + m)
  str = str.replace(/m/, m)
  str = str.replace(/(ss|SS)/, s > 9 ? s : '0' + s)
  str = str.replace(/s/, s)
  return str
}


export function formatUTCDate(timestamp) {
  let newTime = timestamp
  if (newTime.length <= 10) {
    newTime = newTime * 1000
  }
  const date = new Date(newTime);
  const year = date.getUTCFullYear();
  const month = ('0' + (date.getUTCMonth() + 1)).slice(-2);
  const day = ('0' + date.getUTCDate()).slice(-2);
  const hour = ('0' + date.getUTCHours()).slice(-2);
  const minute = ('0' + date.getUTCMinutes()).slice(-2);
  const second = ('0' + date.getUTCSeconds()).slice(-2);

  return `${year}-${month}-${day} ${hour}:${minute}:${second}`;
}

export function formatJSTDate(timestamp) {
  let newTime = timestamp
  if (newTime.length <= 10) {
    newTime = newTime * 1000
  }

  // 将JS时间戳转为Date对象
  const date = new Date(newTime);

  // 创建一个JST时区的Date对象
  const jstDate = new Date(date.toLocaleString('en-US', { timeZone: 'Asia/Tokyo' }));

  // 判断是否为日本夏令时期间
  const isJstDaylightSavingTime = (jstDate.getTimezoneOffset() === 540 && date.getMonth() >= 3 && date.getMonth() < 9);

  // 获取JST时区偏移量（单位为分钟）
  const jstOffset = (isJstDaylightSavingTime ? 540 : 600);

  // 将Date对象的时区从UTC转为JST
  date.setMinutes(date.getMinutes() + jstOffset);

  // 格式化JST时间
  const formattedJstDate = `${date.getFullYear()}/${(date.getMonth() + 1).toString().padStart(2, '0')}/${date.getDate().toString().padStart(2, '0')} ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`;
  return formattedJstDate
}